/*
  学习目标：编程式导航
*/
import React from 'react';

import {
  BrowserRouter as Router,
  NavLink,
  Redirect,
  Route,
  Switch,
} from 'react-router-dom';
import './base.css';

export default class App extends React.Component {
  render() {
    return (
      <Router>
        <div>
          <h1>app组件</h1>
          <NavLink activeClassName="xxx" to="/home">
            调到Home
          </NavLink>
          <br />
          <NavLink exact to="/my">
            调到我的音乐
          </NavLink>
          <br />
          <NavLink to="/friend">调到朋友</NavLink>
          <Switch>
            <Redirect from="/" to="/home" exact />
            <Route path="/home" component={Home} />
            <Route path="/my" component={MyMusic} />
          </Switch>
        </div>
        <Header />
      </Router>
    );
  }
}
// 💥Route组件设置过匹配规则的组件, 会在props自动多出history等属性
// 💥 没有经过Route设置匹配规则的组件, props上没有history
function Header() {
  return <h1>Header</h1>;
}

function Home({ history }) {
  return (
    <>
      <h1>我是首页组件</h1>
      <button
        onClick={() => {
          // history.push('/my');
          // history.go(-1); // go(正负数); 正数代表前进几步, 负数代表后退几步
          history.goBack(); // 等价于go(-1); 回退一步
        }}
      >
        点我调到音乐
      </button>
    </>
  );
}

function MyMusic() {
  return <h1>我是我的音乐件</h1>;
}
